package com.junjie.blibli.Sample.strategy;


import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

/**
 * 首先我们的判断类是需要实现Condition接口的，而且得是spring的
 * ，接着实现了一个matches方法，返回true就说明匹配上了，会被注入容器中，
 * false则不会被注入容器，而且只要实现了这个方法确定了返回值，就可以直接被编译器察觉到，
 * 此时去使用@Autowired注入的话，如果容器中有两个相同的bean，编译器会爆红，
 * 但是编译器也没有那么智能，比如说有一个实现类已经存在于容器中，
 * 另一个条件实现类其实是不能满足条件的，按理来说注入不到容器中，
 * 但是此时idea依然会爆红，所以这些是需要我们人工去判断的
 */
public class FastDfsCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String storage = context.getEnvironment().getProperty("storage.select");
        return "FastDfs".equalsIgnoreCase(storage);
    }
}
